package de.akabahn.ebd.anlage;

import java.io.Serializable;
import java.util.ArrayList;

/**
 * An Abschnitt on the Anlage. As specified in the Anlagendatei.
 *
 * @author moschlar
 */
public class Betriebsstelle implements Serializable {

    private String name;
    private String ds100;
    private Integer nummer;
    private ArrayList<String> gleise;
    private ArrayList<Betriebsstelle> nachbarn;
    private Typ typ;

    public Betriebsstelle() {}

    public Betriebsstelle(String name, String ds100, Integer nummer, ArrayList<String> gleise, ArrayList<Betriebsstelle> nachbarn, Typ typ) {
        this.name = name;
        this.ds100 = ds100;
        this.nummer = nummer;
        this.gleise = gleise;
        this.nachbarn = nachbarn;
        this.typ = typ;
    }

    // <editor-fold defaultstate="collapsed" desc="Getter/Setter">
    public String getName() {
        return name;
    }

    public void setName(String name) {
        this.name = name;
    }

    public String getDS100() {
        return ds100;
    }

    public void setDS100(String ds100) {
        this.ds100 = ds100;
    }

    public Integer getNummer() {
        return nummer;
    }

    public void setNummer(Integer nummer) {
        this.nummer = nummer;
    }

    public ArrayList<String> getGleise() {
        return gleise;
    }

    public void setGleise(ArrayList<String> gleise) {
        this.gleise = gleise;
    }

    public ArrayList<Betriebsstelle> getNachbarn() {
        return nachbarn;
    }

    public void setNachbarn(ArrayList<Betriebsstelle> nachbarn) {
        this.nachbarn = nachbarn;
    }

    public Typ getTyp() {
        return typ;
    }

    public void setTyp(Typ typ) {
        this.typ = typ;
    }
    // </editor-fold>

    @Override
    public String toString() {
        return String.format("<Betriebsstelle %s %s>", this.typ, this.name);
    }

    /**
     * The Typ of a Betriebsstelle.
     */
    public static enum Typ {

        Bf, Bft, Bk, Abzw, Üst, Dkst, Hp, Awanst;

        public static Typ fromString(String s) {
            if (s != null) {
                for (Typ typ : Typ.values()) {
                    if (typ.name().equalsIgnoreCase(s)) {
                        return typ;
                    }
                }
            }
            return null;
        }
    }

}
